# 2025.03.28力扣网刷题
# 珠玑妙算——哈希表、字符串、计数——简单
# 珠玑妙算游戏（the game of master mind）的玩法如下。
# 计算机有4个槽，每个槽放一个球，颜色可能是红色（R）、黄色（Y）、绿色（G）或蓝色（B）。
# 例如，计算机可能有RGGB 4种（槽1为红色，槽2、3为绿色，槽4为蓝色）。
# 作为用户，你试图猜出颜色组合。打个比方，你可能会猜YRGB。
# 要是猜对某个槽的颜色，则算一次“猜中”；要是只猜对颜色但槽位猜错了，则算一次“伪猜中”。注意，“猜中”不能算入“伪猜中”。
# 给定一种颜色组合solution和一个猜测guess，编写一个方法，返回猜中和伪猜中的次数answer，其中answer[0]为猜中的次数，answer[1]为伪猜中的次数。
# 示例：
# 输入： solution = "RGBY", guess = "GGRR"
# 输出：[1, 1]
# 解释： 猜中1次，伪猜中1次。
# 提示：
# len(solution) = len(guess) = 4
# solution和guess仅包含"R", "G", "B", "Y"这4种字符

class Solution(object):
    def masterMind(self, solution, guess):
        """
        :type solution: str
        :type guess: str
        :rtype: List[int]
        """
        hash = {}
        hash2 = {}
        # 统计solution中每种颜色的个数
        for i in range(4):
            key = solution[i]
            if solution[i] not in hash:
                hash[key] = 1
                hash2[key] = [0, 0]
            else:
                hash[key] += 1
        ans = [0, 0]
        for i in range(4):
            key = guess[i]
            if solution[i] == guess[i]:
                ans[0] += 1
                hash2[key][0] += 1
                if hash2[key][0] + hash2[key][1] > hash[key]:
                    ans[1] -= 1
            else:
                if key in hash and hash2[key][0] + hash2[key][1] < hash[key]:
                    ans[1] += 1
                    hash2[key][1] += 1
        return ans

if __name__ == '__main__':
    solution = "RGBY"
    guess = "GGRR"
    print(Solution().masterMind(solution, guess))
